package com.example.design.patterns.geekbang.行为型.访问者模式.refactor;

/**
 * 使用访问者模式，将对象与操作解耦，将这些业务操作抽离出来，
 * 定义在独立细分的访问者类（Extractor、Compressor）中。
 *
 * 难点： 函数重载在大部分面向对象编程语言中是静态绑定的。
 * 也就是说，
 * 调用类的哪个重载函数，是在编译期间，由参数的声明类型决定的，而非运行时，根据参数的实际类型决定的。
 */
public abstract class ResourceFile {
    protected String filePath;

    public ResourceFile(String filePath) {
        this.filePath = filePath;
    }

    abstract public void accept(Extractor extractor);
}

